<?php
/*****************************************************************************
 *              Projet Master RIM : Reconnaissance de panneaux               *
 *                    Guillaume MONTAVON & Renaud DAVID                      *
 *                                                                           *
 *        Contient toutes les fonctions utilisées dans le site web           *
 *****************************************************************************/

include_once("config.inc.php");

/******************************************************************************
*          fonction permettant de se connecter à la base de données           *
******************************************************************************/
function connexion($host,$user,$mdp,$db){

	$link = mysql_connect($host,$user,$mdp) or die ("pas de connexion");
	mysql_select_db($db,$link) or die ("pas de connexion");	
	return $link;
	
}

$link = connexion($host,$user,$mdp,$db);

/*****************************************************************************
 *                 Supprime les backslash dans les variables                 *
 *****************************************************************************/
function sanitizeVariables(&$item, $key) {
    if (!is_array($item)) {
        // undoing 'magic_quotes_gpc = On' directive 
        if (get_magic_quotes_gpc())
            $item = stripcslashes($item);
    } 
} 

/*****************************************************
*  fonction testant si une adresse mail est valide   *
******************************************************/
function test_mail($mail) {
		
	// On vérifie la variable $mail n'est pas vide
	if(empty($mail))
		return false;
		
	// On va tester la chaîne grâce aux expressions régulières.
	$masque  = '`^[[:alnum:]]([-_.]?[[:alnum:]])*';
	$masque .= '@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4})$`';
	if(preg_match($masque, $mail)) {

		// l'email est bien formé.
		return true;
		}

	return false;
}

/*****************************************************************************
 *         Ajoute un utilisateur avec son identifiant et mot de passe        *
 *****************************************************************************/
function ajoutUtilisateur() {

	$res = mysql_query("SELECT * FROM utilisateur WHERE identifiant='".mysql_real_escape_string($_POST['login'])."'");
	
	if(isset($_POST['password']) and strlen($_POST['password'])>=6 and isset($_POST['login']) and !empty($_POST['login']) and isset($_POST['nom']) and !empty($_POST['nom']) and isset($_POST['prenom']) and !empty($_POST['prenom']) and isset($_POST['mail']) and test_mail($_POST['mail']) and mysql_num_rows($res)==0) {
		$password = md5($_POST['password']);
		$login = mysql_real_escape_string($_POST['login']);
		$nom = strtoupper(mysql_real_escape_string($_POST['nom']));
		$prenom = ucwords(strtolower(mysql_real_escape_string($_POST['prenom'])));
		$mail = mysql_real_escape_string($_POST['mail']);
		
		if(mysql_query("INSERT INTO utilisateur VALUES('$login','$password','$nom','$prenom','$mail')"))
			return true;
		else
			return false;
	}
	else
		return false;

}

/*****************************************************************************
 *                      Permet de connecte un utilisateur                    *
 *****************************************************************************/
function newConnexion() {
	
	$redirection = false;
	
	//si l'utilisateur avait enregistrer son identifiant dans ses cookies, on le connect (se souvenir de moi)
	if(isset($_COOKIE['pseudo']) and !empty($_COOKIE['pseudo']) and isset($_COOKIE['pass']) and !empty($_COOKIE['pass'])) {
		$_POST['pseudo'] = $_COOKIE['pseudo'];
		$_POST['pass'] = $_COOKIE['pass'];
		$mdp = $_POST['pass'];
		$redirection = true;
	}
	else
		$mdp = md5($_POST['pass']);

	$loginOK = false;
		
	//on teste si le visiteur a soumis le formulaire de connexion
	if ((isset($_POST['pseudo']) && !empty($_POST['pseudo'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) { 
		// on teste si une entrée de la base contient ce couple login / pass 
		$sql = 'SELECT * FROM utilisateur WHERE identifiant="'.addslashes($_POST['pseudo']).'"'; 
		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
		// On vérifie que l'utilisateur existe bien
		if (mysql_num_rows($req) > 0) {
			$data = mysql_fetch_assoc($req);
			// On vérifie que son mot de passe est correct
			if ($mdp == $data['mdPasse'])
				$loginOK = true;
		}
	}
	
	// Si le login a été validé on met les données en sessions
	if ($loginOK) {
		session_start();
		
		$_SESSION['identifiant']=addslashes($_POST['pseudo']);
		//si il a décider de se souvenir de lui, on ajoute son identifiant dans ses cookies
		if(isset($_POST['souvenir'])) {
			$expire = time() + 365*24*3600;
			setcookie('pseudo', $_POST['pseudo'], $expire);
			setcookie('pass', md5($_POST['pass']), $expire);
		}
		if($redirection) {
			header("Location: index.php");
			exit(); 
		}
		return true;
	}
	else {
		if($redirection) {
			newDeconnexion();
			header("Location: index.php");
			exit(); 
		}
		else
			return false;
	}
}


/*****************************************************************************
 *                     Permet de déconnecte un utilisateur                   *
 *****************************************************************************/
function newDeconnexion() {

	if(isset($_COOKIE['pseudo']))
		setcookie('pseudo', '', -1);
	if(isset($_COOKIE['pass']))
		setcookie('pass', '', -1);
	session_unset();
	session_destroy();
	
	return true;

}

/*****************************************************************************
 *                    On teste si l'utilisateur est connecté                 *
 *****************************************************************************/
function estConnecte() {

	return isset($_SESSION['identifiant']) and !empty($_SESSION['identifiant']);

}

/*****************************************************************************
 *            Permet au Smartphone d'uploader un nouveau panneau             *
 *           On récupère l'image et les propriétés du panneau puis           *
 *              on les enregistre sur le serveur et dans la BdD              *
 *****************************************************************************/
function uploadNvPanneau() {
	
	$reussi = false;
	
	//Add the original filename to our target path.
	$target_path = repPhoto.basename($_FILES['uploadedfile']['name']);
	echo "chemin : ".$target_path;
	
	//pour tester que c'est bien une image
	$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG', '.JPEG');
	$extension = strrchr($_FILES['uploadedfile']['name'], '.');
	
	//check if the file is uploaded
	if(in_array($extension, $extensions)) {
	
		if(is_uploaded_file($_FILES['uploadedfile']['tmp_name'])) {
			
			echo "Fichier= ". $_FILES['uploadedfile']['name'] ." telechargement OK.\n";
			
			if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path) === TRUE) {
				echo "The file ".  basename($_FILES['uploadedfile']['name'])." has been uploaded";
				
				$req = "INSERT INTO panneau values(null, '".doubleval($_POST['latitude'])."', '".doubleval($_POST['longitude'])."', '1', '".basename($_FILES['uploadedfile']['name'])."', '0', '0', '".intval($_POST['direction'])."', '".intval($_POST['type'])."')";
				if(mysql_query($req))
					$reussi = true;
			}
			else {
				echo "There was an error uploading the file, please try again!";
				echo "error =".basename($_FILES['uploadedfile']['error']);
				echo "file=".$_FILES['uploadedfile']['tmp_name'];
			}
		}
		else
			echo " Nom du fichier : '". $_FILES['uploadedfile']['name'];
	}
	else
		echo "mauvaise extension de fichier";
		
	return $reussi;

}

/*****************************************************************************
 *       Retourne au format JSON la liste de tous les panneaux validés       *
 *****************************************************************************/
function listePanneaux() {

	$retour = array();
	$retour['listePanneaux'] = array();
	
	$req = "SELECT * FROM panneau p, typepanneau tp WHERE p.idType=tp.idType AND p.panneauValide<>0";
	$resPan = mysql_query($req);
	$compt = 0;
	while($panneau = mysql_fetch_array($resPan)) {
		$retour['listePanneaux'][$compt]['idPanneau'] = $panneau['idPanneau'];
		$retour['listePanneaux'][$compt]['latitudePanneau'] = $panneau['latitudePanneau'];
		$retour['listePanneaux'][$compt]['longitudePanneau'] = $panneau['longitudePanneau'];
		$retour['listePanneaux'][$compt]['cheminPhoto'] = $panneau['cheminPhoto'];
		$retour['listePanneaux'][$compt]['type'] = $panneau['libelleType'];
		$compt++;
	}
	
	return json_encode($retour);
}

/*****************************************************************************
 *      Retourne au format JSON la liste de tous les panneaux à valider      *
 *****************************************************************************/
function imgAValider() {
	
	$retour = array();
	
	$retour['nbPanneau'] = nbNotif();
	
	$req = "SELECT * FROM panneau WHERE panneauValide=0";
	$resPan = mysql_query($req);
	$panneau = mysql_fetch_array($resPan);
	if(isset($panneau['idPanneau'])) {
		$retour['idPanneau'] = $panneau['idPanneau'];
		$retour['latitudePanneau'] = $panneau['latitudePanneau'];
		$retour['longitudePanneau'] = $panneau['longitudePanneau'];
		$retour['cheminPhoto'] = $panneau['cheminPhoto'];
	}
		
	return json_encode($retour);
	
}

/*****************************************************************************
 *            Valide un panneau en donnant sa fiabilité et son type          *
 *****************************************************************************/
function validerPanneau($idPanneau, $fiabilite, $type) {
	
	$req="UPDATE panneau SET fiabilitePanneau='$fiabilite', idType='$type', panneauValide='1' WHERE idPanneau='$idPanneau'";
	return mysql_query($req);
	
}

/*****************************************************************************
 *                          Supprime un panneau doublon                      *
 *****************************************************************************/
function doublonPanneau($panExistant, $panNonValide, $gardeImage) {
	
	$imageASuppr = "";
	$imageAgarder = "";
	
	$req = "SELECT * FROM panneau WHERE idPanneau='$panExistant' AND panneauValide<>0";
	$resPan = mysql_query($req);
	$pan = mysql_fetch_array($resPan);
	if(isset($pan['cheminPhoto'])) {
		if($gardeImage)
			$imageAgarder = $pan['cheminPhoto'];
		else
			$imageASuppr = $pan['cheminPhoto'];
	}
	
	$req = "SELECT * FROM panneau WHERE idPanneau='$panNonValide'";
	$resPan = mysql_query($req);
	$pan = mysql_fetch_array($resPan);
	if(isset($pan['cheminPhoto'])) {
		if($gardeImage)
			$imageASuppr = $pan['cheminPhoto'];
		else
			$imageAgarder = $pan['cheminPhoto'];
	}
	
	if(is_file(repPhoto.basename($imageASuppr)) == TRUE)
		unlink(repPhoto.basename($imageASuppr));
		
	$rqt1 = "UPDATE panneau SET nbMarquage=nbMarquage+1 , cheminPhoto='$imageAgarder' WHERE idPanneau='$panExistant'";
	$rqt2 = "DELETE FROM panneau WHERE idPanneau='$panNonValide'";
	if(mysql_query($rqt1) and mysql_query($rqt2))
		return true;
	else
		return false;
	
}

/*****************************************************************************
 *   Vérifie si il existe un panneau identique à celui donné en paramètre    *
 *****************************************************************************/
function panneauEnDouble($idPanneau) {
	
	$req = "SELECT * FROM panneau WHERE idPanneau='$idPanneau'";
	$resPan = mysql_query($req);
	$pan = mysql_fetch_array($resPan);
	if(isset($pan['latitudePanneau'])) {
		$req = "SELECT * FROM panneau WHERE latitudePanneau='".$pan['latitudePanneau']."' AND longitudePanneau='".$pan['longitudePanneau']."' AND panneauValide<>0";
		$resPan = mysql_query($req);
		$panneau = mysql_fetch_array($resPan);
		if(isset($panneau['idPanneau']))
			return '{"id":"'.$panneau['idPanneau'].'","cheminPhoto":"'.$panneau['cheminPhoto'].'"}';
		else
			return '{"id":"0","cheminPhoto":""}';
	}
	else
		return '{"id":"0","cheminPhoto":""}';
	
}

/*****************************************************************************
 *                 Retourne le nombre de panneaux non validés                *
 *****************************************************************************/
function nbNotif() {
	
	$req = "SELECT * FROM panneau WHERE panneauValide=0";
	$resPan = mysql_query($req);
	$nb = 0;
	$nb = mysql_num_rows($resPan);
	
	return $nb;
	
}

/*****************************************************************************
 *                            Supprime un panneau                            *
 *****************************************************************************/
function supprimerPanneau($id) {
	
	$req = "SELECT * FROM panneau WHERE idPanneau='$id'";
	$resPan = mysql_query($req);
	$panneau = mysql_fetch_array($resPan);
	
	if(is_file(repPhoto.basename($panneau['cheminPhoto'])) == TRUE)
		unlink(repPhoto.basename($panneau['cheminPhoto']));
	
	$req = "DELETE FROM panneau WHERE idPanneau='$id'";
	return mysql_query($req);

}

/*****************************************************************************
 *        Retourne le chemin de l'image correspondant au type demandé        *
 *****************************************************************************/
function imgType($type) {
	
	$req = "SELECT * FROM typepanneau WHERE idType='$type'";
	$resType = mysql_query($req);
	$img = mysql_fetch_array($resType);
	
	return repPhotoType.$img['cheminPhotoExemple']; 
	
}

/*****************************************************************************
 *                Retourne au format GPX la liste des panneaux               *
 *****************************************************************************/
function exporterGPX() {
	
	$gpx = '<?xml version="1.0" encoding="ISO-8859-1"?>
	<gpx version="1.1" creator="Master RIM" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns="http://www.topografix.com/GPX/1/0" 
		xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" 
		xsi:schemaLocation="http://www.topografix.com/GPX/1/0 
		http://www.topografix.com/GPX/1/0/gpx.xsd 
		http://www.topografix.com/GPX/Private/TopoGrafix/0/2 
		http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd">
	';
	
	$req = "SELECT * FROM panneau p, typepanneau tp WHERE p.idType=tp.idType AND p.panneauValide<>0";
	$resPan = mysql_query($req);
	while($panneau = mysql_fetch_array($resPan))
		$gpx .= '<wpt lat="'.$panneau['latitudePanneau'].'" lon="'.$panneau['longitudePanneau'].'"><idpan>'.$panneau['idPanneau'].'</idpan><dir>'.$panneau['direction'].'</dir><idtype>'.$panneau['idType'].'</idtype><typepan>'.$panneau['libelleType'].'</typepan><photo>'.$panneau['cheminPhoto'].'</photo></wpt>
		';
	
	$gpx .= '
	</gpx>';
	
	return $gpx;
	
}

/*****************************************************************************
 *  Importe la liste des se trouvant contenue dans une chaîne de caractère   *
 *                                au format GPX                              *
 *****************************************************************************/
function importerGPX($gpx) {
	
	$retour = true;
	
	$xml = simplexml_load_string($gpx);
	
	foreach ($xml->children() as $fils) {
		$id = intval($fils[0]->idpan);
		if($id < 1)
			$id = "null";
			
		$req = "REPLACE INTO panneau values($id, '".doubleval($fils['lat'])."', '".doubleval($fils['lon'])."', '1', '".mysql_real_escape_string($fils[0]->photo)."', '0', '0', '".intval($fils[0]->dir)."', '".intval($fils[0]->idtype)."')";
		if(!mysql_query($req) and $id < 1)
			$retour = false;
	}
	
	return $retour;

}

/*****************************************************************************
 *   Retourne le contenu d'un fichier qui a été uploader par un utilisateur  *
 *****************************************************************************/
function contenuUploadFichier($extensions) {
	
	$contenu = "";
	$taille_maxi = 1000000; //en octet
	$fichierTemp = $_FILES['fichierUpload']['tmp_name'];
	$extension = strrchr($_FILES['fichierUpload']['name'], '.');
	
	if(in_array($extension, $extensions)) {
		
		if(filesize($fichierTemp) < $taille_maxi) {
			
			if(is_uploaded_file($fichierTemp)) {
				
				if(file_exists($fichierTemp)) {
					
					$fichier = fopen($fichierTemp, "r");
					$contenu = fread($fichier, filesize($fichierTemp));
					fclose($fichier);
					
				}
				else {
					echo "Error = ".basename($_FILES['fichierUpload']['error']);
					echo "file = ".$fichierTemp;
				}
			}
			else
				echo "Erreur d'importation, Nom du fichier : '". $fichierTemp;
		}
		else
			echo "Le fichier est trop gros...";
	}
	else
		echo "mauvaise extension de fichier";
		
	return $contenu;

}

/*****************************************************************************
 *                      Importe un fichier GPX dans la BdD                   *
 *****************************************************************************/
function importerFichierGPX() {

	$retour = true;
	
	$gpx = contenuUploadFichier(array('.gpx', '.GPX'));
	if(!empty($gpx))
		importerGPX($gpx);
	else
		$retour = false;
	
	return $retour;

}

/*****************************************************************************
 *         Affiche la liste des fichiers contenus dans un fichier ZIP        *
 *****************************************************************************/
function listerFichierZIP($nomFichier) {
	
	$za = new ZipArchive();
	
	$za->open($nomFichier);
	
	for( $i = 0; $i < $za->numFiles; $i++ ){
		$stat = $za->statIndex( $i );
		print_r( basename( $stat['name'] ) . PHP_EOL );
	}

}

/*****************************************************************************
 *  Extrait un fichier ZIP dans le dossier de destination donné en paramètre *
 *****************************************************************************/
function extraireZIP($archive, $dossierDest) {
	
	$zip = new ZipArchive();
	if ($zip->open($archive) !== TRUE)
		die("Echec lors de l'ouverture de l'archive");
	
	$zip->extractTo($dossierDest) or die("Erreur rencontrée lors de l'extraction de l'archive");
	$zip->close() or die("Erreur lors de la fermeture de l'archive");

}

/*****************************************************************************
 *              Extrait un fichier ZIP envoyé par un utilisateur             *
 *****************************************************************************/
function uploadAndUnzip() {
	
	$extensions = array('.zip', '.ZIP');
	$dossierDest = repPhoto;
	$reussi = false;
	$taille_maxi = 50000000; //en octet
	$fichierTemp = $_FILES['fichierZip']['tmp_name'];
	$extension = strrchr($_FILES['fichierZip']['name'], '.');
	
	if(in_array($extension, $extensions)) {
	
		if(filesize($fichierTemp) < $taille_maxi) {

			if(is_uploaded_file($fichierTemp)) {
				
				if(file_exists($fichierTemp)) {
					echo $dossierDest;
					extraireZIP($fichierTemp, $dossierDest);
					$reussi = true;
				}
				else {
					echo "Error = ".basename($_FILES['fichierZip']['error']);
					echo "file = ".$fichierTemp;
				}
			}
			else
				echo "Erreur d'importation, Nom du fichier : '". $fichierTemp;
		}
		else
			echo "Le fichier est trop gros...";
	}
	else
		echo "Mauvaise extension de fichier";
		
	return $reussi;

}

/*****************************************************************************
 *                Compresse toutes les photos dans une archive               *
 *****************************************************************************/
function compresserPhotoZIP() {

	$retour = true;
	$dossierSrc = repPhoto;
	$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG', '.JPEG');
	
	$new_archive_name = $dossierSrc."photos.zip";
	$new_zip = new ZipArchive();
	$new_open = $new_zip->open($new_archive_name, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
	if ($new_open === TRUE) {
		$dir = opendir($dossierSrc);
		while ($file = readdir($dir)) {
			if ($file != "." and $file != ".." and in_array(strrchr($file, '.'), $extensions)) {
				if (!$new_zip->addFile($dossierSrc.$file, $file))
					$retour = false;
			}
		}
	}
	else
		$retour = false;
	
	$new_zip->close(); 
	
	if(!file_exists($dossierSrc."photos.zip"))
		$retour = false;
		
	return $retour;
	
}

/*****************************************************************************
 *                 Retourne la distance entre deux coordonnées               *
 *****************************************************************************/
function get_distance_m($lat1, $lng1, $lat2, $lng2) {
	$earth_radius = 6378137;   // Terre = sphère de 6378km de rayon
	$rlo1 = deg2rad($lng1);
	$rla1 = deg2rad($lat1);
	$rlo2 = deg2rad($lng2);
	$rla2 = deg2rad($lat2);
	$dlo = ($rlo2 - $rlo1) / 2;
	$dla = ($rla2 - $rla1) / 2;
	$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));
	$d = 2 * atan2(sqrt($a), sqrt(1 - $a));
	return ($earth_radius * $d);
}

/*****************************************************************************
 *     Retourne en format JSON la liste des type de panneaux qui manque au   *
 *  Smartphone (en fonction de ceux qu'il connaît déjà : donné en paramètre) *
 *****************************************************************************/
function getTypeManquant($typePanneauConnus) {
	
	$retour = array();
	$retour['listeType'] = array();
	
	$listePan = json_decode($typePanneauConnus, 1);
	
	$req = "SELECT * FROM typepanneau";
	$resPan = mysql_query($req);
	$compt = 0;
	while($type = mysql_fetch_array($resPan))
		if(!in_array($type['idType'], $listePan['listeType'])) {
			$retour['listeType'][$compt]['id'] = $type['idType'];
			$retour['listeType'][$compt]['libelle'] = $type['libelleType'];
			$retour['listeType'][$compt]['photo'] = $type['cheminPhotoExemple'];
			$compt++;
		}
	return json_encode($retour);
	
}

/*****************************************************************************
 *         Affiche l'image qui correspond au type de panneau demandé         *
 *****************************************************************************/
function getImageType($idType) {

	$req = "SELECT * FROM typepanneau WHERE idType='$idType'";
	$resPan = mysql_query($req);
	$type = mysql_fetch_array($resPan);
	
	$file = repPhotoType.basename($type['cheminPhotoExemple']);
	if(is_file($file)) {
		header('Content-Length: ' . filesize($file));
		header('Content-Disposition: attachment; filename="' . basename($file) . '"');
		readfile($file);
		exit();
	}

}

/*****************************************************************************
 *              Affiche l'image qui correspond au panneau demandé            *
 *****************************************************************************/
function getImagePanneau($idPanneau) {

	$req = "SELECT * FROM panneau WHERE idPanneau='$idPanneau'";
	$resPan = mysql_query($req);
	$panneau = mysql_fetch_array($resPan);
	
	$file = repPhoto.basename($panneau['cheminPhoto']);
	if(is_file($file)) {
		//header('Content-Type: application/pdf');
		header('Content-Length: ' . filesize($file));
		header('Content-Disposition: attachment; filename="' . basename($file) . '"');
		readfile($file);
		exit();
	}

}

/*****************************************************************************
 *  Retourne la liste des panneaux qui se trouve dans la zone du Smartphone  *
 *****************************************************************************/
function getListePanneau($latitude, $longitude, $formatXML = true, $interval = 0.2) {

	$positionLat = intval($latitude / $interval);
	$positionLng = intval($longitude / $interval);
	
	$retour = array();
	$retour['listePanneaux'] = array();
	
	$gpx = '<?xml version="1.0" encoding="ISO-8859-1"?>
	<gpx version="1.1" creator="Master RIM" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns="http://www.topografix.com/GPX/1/0" 
		xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/2" 
		xsi:schemaLocation="http://www.topografix.com/GPX/1/0 
		http://www.topografix.com/GPX/1/0/gpx.xsd 
		http://www.topografix.com/GPX/Private/TopoGrafix/0/2 
		http://www.topografix.com/GPX/Private/TopoGrafix/0/2/topografix.xsd">
	';
	
	$req = "SELECT * FROM panneau p, typepanneau tp WHERE p.idType=tp.idType AND TRUNCATE((latitudePanneau/$interval),0) = $positionLat AND TRUNCATE((longitudePanneau/$interval),0) = $positionLng AND p.panneauValide<>0";
	$resPan = mysql_query($req);
	$compt = 0;
	while($panneau = mysql_fetch_array($resPan)) {
		$gpx .= '<wpt lat="'.$panneau['latitudePanneau'].'" lon="'.$panneau['longitudePanneau'].'"><idpan>'.$panneau['idPanneau'].'</idpan><dir>'.$panneau['direction'].'</dir><idtype>'.$panneau['idType'].'</idtype><typepan>'.$panneau['libelleType'].'</typepan><photo>'.$panneau['cheminPhoto'].'</photo></wpt>
		';
		$retour['listePanneaux'][$compt]['idPanneau'] = $panneau['idPanneau'];
		$retour['listePanneaux'][$compt]['latitudePanneau'] = $panneau['latitudePanneau'];
		$retour['listePanneaux'][$compt]['longitudePanneau'] = $panneau['longitudePanneau'];
		$retour['listePanneaux'][$compt]['cheminPhoto'] = $panneau['cheminPhoto'];
		$retour['listePanneaux'][$compt]['type'] = $panneau['libelleType'];
		$compt++;
	}
	
	$gpx .= '
	</gpx>';
	
	if($formatXML)
		return $gpx;
	else
		return json_encode($retour);
	
}

/*****************************************************************************
 *                Affiche le menu si l'utilisateur est connecté              *
 *****************************************************************************/
function obtenirMenu() {
	
	if(estConnecte()) {
		return '<button type="button" id="listeBoutons">Liste des panneaux</button>&nbsp;&nbsp;&nbsp;<button type="button" id="create-user">Enregistrer un nouveau membre</button>&nbsp;&nbsp;&nbsp;<button type="button" id="validerPanneaux">Valider les panneaux</button>&nbsp;&nbsp;&nbsp;<button type="button" id="gestionTypes">Gestion des types de panneau</button>';
	}
	else
		return "";
	
}

/*****************************************************************************
 *                 Affiche le formulaire qui permet d'importer               *
 *                 des panneaux si l'utilisateur est connecté                *
 *****************************************************************************/
function obtenirFormImportation() {
	
	if(estConnecte()) {
		?>
		<br/><br/>
		<br/><br/>
		<div style="font-size:3.0em;">Importation</div>
		<br/><br/>
		<form class="cmxform" id="formImporterGPX" name="formImporterGPX" enctype="multipart/form-data" method="post" action="requete.php?objet=importerFichierGPX">
			<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
			<label for="fichierUpload">Fichier GPX à importer : </label>
			<br/>
			<input id="fichierUpload" type="file" name="fichierUpload" class="required" />
			<br/>
			<div id="loadImport" style="display: inline-block;"></div>
			<br/>
			<button id="boutonImporterFichier" type="submit" name="bouton_submit">Importer</button>
		</form>
		<br/><br/>
		<form class="cmxform" id="formImporterPhotos" name="formImporterPhotos" enctype="multipart/form-data" method="post" action="requete.php?objet=importerPhotos">
			<input type="hidden" name="MAX_FILE_SIZE" value="50000000"/>
			<label for="fichierZip">Fichier ZIP contenant les photos : </label>
			<br/>
			<input id="fichierZip" type="file" name="fichierZip" class="required" />
			<br/>
			<div id="loadImportPhoto" style="display: inline-block;"></div>
			<br/>
			<button id="boutonImporterPhoto" type="submit" name="bouton_submit">Importer Photos</button>
		</form>
		<?php
	}
	else
		return "";
	
}

/*****************************************************************************
 *                 Affiche le formulaire qui permet d'ajouter                *
 *                         un nouveau type de panneau                        *
 *****************************************************************************/
function obtenirFormNouveauType() {
	
	if(estConnecte()) {
		?>
		<center>
		<div style="font-size:3.0em;">Création d'un nouveau type de panneaux</div>
		<br/><br/>
		<form class="cmxform" id="nouveauTypeForm" name="nouveauTypeForm" enctype="multipart/form-data" method="post" action="requete.php?objet=creerNouveauType">
			<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
			<label for="libelleType">Libellé : </label>
			<input id="libelleType" type="text" name="libelleType" class="required" />
			<br/><br/>
			<label for="imageType">Image exemple : </label>
			<input id="imageType" type="file" name="imageType" class="required" />
			<br/>
			<div id="loadType" style="display: inline-block;"></div>
			<br/>
			<button id="boutonNouveauType" type="submit" name="boutonNouveauType">Créer un nouveau type</button>
		</form>
		</center>
		<?php
	}
	else
		return "";
	
}

/*****************************************************************************
 *           Affiche la liste des types de panneau disponibles               *
 *****************************************************************************/
function obtenirListeType() {

	?>
	<center>
		<a href="typepanneau.php#ajoutNouveauType"><img src="images/icones/plus.png" alt="Ajouter" border="0" style="vertical-align: middle;"/><b>&nbsp;Ajouter un type de panneau</b></a>
		<br/><br/>
		<table cellspacing="0" cellpadding="10" style="text-align:center;">
			<tr style="font-weight:bold;font-size: 1.4em;background-color: #75c025;"><th>Identifiant</th><th>Libelle</th><th>Image Exemple</th></tr>
			
			<?php
			$rqt = "SELECT * FROM typepanneau";
			$res = mysql_query($rqt);
			
			while($type = mysql_fetch_array($res))
				echo '<tr><td>'.$type['idType'].'</td><td>'.$type['libelleType'].'</td><td><img src="'.repPhotoType.$type['cheminPhotoExemple'].'" alt="'.$type['libelleType'].'" height="50" /></td></tr>';
			?>
			
		</table>
	</center>
	<?php
	
}

/*****************************************************************************
 *                    Permet de créer un type de panneau                     *
 *               en important l'image corespondante à celui-ci               *
 *****************************************************************************/
function creerNouveauType() {
	
	$extensions = array('.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.gif', '.GIF', '.bmp', '.BMP');
	$reussi = false;
	$taille_maxi = 1000000; //en octet
	$fichierTemp = $_FILES['imageType']['tmp_name'];
	$extension = strrchr($_FILES['imageType']['name'], '.');
	$fichierDest = repPhotoType.mysql_real_escape_string($_POST['libelleType']).$extension;
	
	if(in_array($extension, $extensions)) {
		if(filesize($fichierTemp) < $taille_maxi) {
			if(is_uploaded_file($fichierTemp)) {
				if(move_uploaded_file($_FILES['imageType']['tmp_name'], $fichierDest) === TRUE) {
					$req = "INSERT INTO typepanneau values(null, '".mysql_real_escape_string($_POST['libelleType'])."', '".mysql_real_escape_string($_POST['libelleType'])."$extension')";
					if(mysql_query($req))
						$reussi = true;
				}
			}
		}
	}
	return $reussi;
	
}

?>